deep copy [Java] 객체지향 프로그래밍 - 생성자 App 클래스를 예로 들어 인스턴스 생성하는 과정은 아래와 같아요. 컴파일을 할 때 소스 파일*.java의 클래스가 생성자가 하나도 없다면 컴파일러는 자동적으로 아래와 같은 생성자를 추가해서 컴파일해요. 아무 기능도 수행하지 않기 때문에 생성과 동시에 초기화가 필요한 인스턴스는 반드시 생성자를 선언해줘야 해요. 근데 만약에 매개변수가 있는, 기본 생성자가 아닌 생성자가 선언되어 있고, 기본 ... Object Oriented ProgrammingConstructordeep copyshallow copyOOPJavaConstructor [JS] 원시 값 vs 객체 원시 값을 변수에 할당하면 변수에는 실제 값이 저장된다. 객체를 변수에 할당하면 변수에는 참조 값이 저장된다. 원시 값을 가진 변수를 다른 변수에 할당하면 변수에는 원시 값이 복사된다. 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사된다. 불변성을 갖는 원시 값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없다. 🔰 Pass By Value(값에 의한 ... 원시 값frontendImmutabledeep copyTILpass-by-referencemutableshallow copy객체jspass by valueImmutable Shallow Copy vs Deep Copy feat.Spread Operator {...} source: Spread Operator는 Deep Copy를 만들어준다 하지만 데이터가 nested 되어 있을 경우에는 nested data는 shallow copy가 된다. 따라서 nested 되어있는 부분도 deep copy 하려면 {...a, b: {...b.foods}}이런식으로 또 한번의 Spread Operator를 행해 주어야 한다 source:... deep copyspread operatorES5shallow copyES5 객체의 복사, 불변성의 문제 실무에서 다음 a와 같은 구조의 배열을 복사해서 안의 프로퍼티 값을 변경하니 a의 불변성이 지켜지지 않는 문제가 발생했다. 배열 a를 전개 구문으로 복사한 b를 map을 이용해 안의 객체 first의 값을 바꿔보자. 그러면 a의 값 또한 변하면서 불변성이 지켜지지 않는다. 전개구문은 다음과 같은 특성이 있기 때문이다. Spread 문법은 배열을 복사할 때 1 레벨 깊이에서 효과적으로 동작합니... Array.prototype.slice.call()shallow copysliceSpread SyntaxArray.prototype.slice()deep copyArray.prototype.slice() [JS] Shallow Copy & Deep Copy 값을 복사하는 경우 새로운 변수에 값을 대입해주면 기존 변수는 원본이 되고 새로운 변수는 복사본이 되어 복사본을 변경하여도 원본이 변경되지 않는다. 이렇게 값을 복사하는 방식은 객체와 배열 복사에 적용되지 않는다. => 객체와 배열을 값 자체를 가지고 있는 것이 아니라 값이 들어 있는 주소를 가지고 있어서 주소가 복사되는 것이다!!! 이러한 문제를 해결하기 위해 Shallow Copy(얕은 ... deep copyshallow copyJavaScriptjsJavaScript [프로그래머스] 수식 최대화 (Java) 문제를 풀면서 시간이 많이 들고 헷갈렸던 내용은 크게 1) 문자열 쪼개기 2) DeepCopy에 관한 내용이었다. 1) 문자열 쪼개기 같은 경우는 "100-200*300-500+20"와 같은 문자열을 연산과 숫자를 따로 각각의 List에 넣는 작업이었다. 원래는 정규식을 사용해 바로 split을 하려고 하였으나 split에 여러 조건을 넣는것을 하지 못하여 결국 replace로 변경하고 돌아... 2020 카카오 인턴십코딩테스트 Level2정규식deep copy알고리즘 문제풀이2020 카카오 인턴십
[Java] 객체지향 프로그래밍 - 생성자 App 클래스를 예로 들어 인스턴스 생성하는 과정은 아래와 같아요. 컴파일을 할 때 소스 파일*.java의 클래스가 생성자가 하나도 없다면 컴파일러는 자동적으로 아래와 같은 생성자를 추가해서 컴파일해요. 아무 기능도 수행하지 않기 때문에 생성과 동시에 초기화가 필요한 인스턴스는 반드시 생성자를 선언해줘야 해요. 근데 만약에 매개변수가 있는, 기본 생성자가 아닌 생성자가 선언되어 있고, 기본 ... Object Oriented ProgrammingConstructordeep copyshallow copyOOPJavaConstructor [JS] 원시 값 vs 객체 원시 값을 변수에 할당하면 변수에는 실제 값이 저장된다. 객체를 변수에 할당하면 변수에는 참조 값이 저장된다. 원시 값을 가진 변수를 다른 변수에 할당하면 변수에는 원시 값이 복사된다. 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사된다. 불변성을 갖는 원시 값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없다. 🔰 Pass By Value(값에 의한 ... 원시 값frontendImmutabledeep copyTILpass-by-referencemutableshallow copy객체jspass by valueImmutable Shallow Copy vs Deep Copy feat.Spread Operator {...} source: Spread Operator는 Deep Copy를 만들어준다 하지만 데이터가 nested 되어 있을 경우에는 nested data는 shallow copy가 된다. 따라서 nested 되어있는 부분도 deep copy 하려면 {...a, b: {...b.foods}}이런식으로 또 한번의 Spread Operator를 행해 주어야 한다 source:... deep copyspread operatorES5shallow copyES5 객체의 복사, 불변성의 문제 실무에서 다음 a와 같은 구조의 배열을 복사해서 안의 프로퍼티 값을 변경하니 a의 불변성이 지켜지지 않는 문제가 발생했다. 배열 a를 전개 구문으로 복사한 b를 map을 이용해 안의 객체 first의 값을 바꿔보자. 그러면 a의 값 또한 변하면서 불변성이 지켜지지 않는다. 전개구문은 다음과 같은 특성이 있기 때문이다. Spread 문법은 배열을 복사할 때 1 레벨 깊이에서 효과적으로 동작합니... Array.prototype.slice.call()shallow copysliceSpread SyntaxArray.prototype.slice()deep copyArray.prototype.slice() [JS] Shallow Copy & Deep Copy 값을 복사하는 경우 새로운 변수에 값을 대입해주면 기존 변수는 원본이 되고 새로운 변수는 복사본이 되어 복사본을 변경하여도 원본이 변경되지 않는다. 이렇게 값을 복사하는 방식은 객체와 배열 복사에 적용되지 않는다. => 객체와 배열을 값 자체를 가지고 있는 것이 아니라 값이 들어 있는 주소를 가지고 있어서 주소가 복사되는 것이다!!! 이러한 문제를 해결하기 위해 Shallow Copy(얕은 ... deep copyshallow copyJavaScriptjsJavaScript [프로그래머스] 수식 최대화 (Java) 문제를 풀면서 시간이 많이 들고 헷갈렸던 내용은 크게 1) 문자열 쪼개기 2) DeepCopy에 관한 내용이었다. 1) 문자열 쪼개기 같은 경우는 "100-200*300-500+20"와 같은 문자열을 연산과 숫자를 따로 각각의 List에 넣는 작업이었다. 원래는 정규식을 사용해 바로 split을 하려고 하였으나 split에 여러 조건을 넣는것을 하지 못하여 결국 replace로 변경하고 돌아... 2020 카카오 인턴십코딩테스트 Level2정규식deep copy알고리즘 문제풀이2020 카카오 인턴십